import axios from 'axios'
import store from '@/store'
import storage from 'store'
import notification from 'ant-design-vue/es/notification'
// import { VueAxios } from './axios'
import { ACCESS_TOKEN } from '@/store/mutation-types'

// 创建 axios 实例
const request = axios.create({
    // API 请求的默认前缀
    // baseURL: process.env.VUE_APP_API_BASE_URL,
    baseURL: 'http://api.comeonfans.com',
    // timeout: 3000 // 请求超时时间
})

// 异常拦截处理器
const errorHandler = (error) => {
    if (error.response) {
        const data = error.response.data
            // 从 localstorage 获取 token
        const token = storage.get(ACCESS_TOKEN)
        if (error.response.status === 403) {
            notification.error({
                message: 'Forbidden',
                description: data.message
            })
        }
        if (error.response.status === 401 && !(data.result && data.result.isLogin)) {
            notification.error({
                message: 'Unauthorized',
                description: 'Authorization verification failed'
            })
            if (token) {
                store.dispatch('Logout').then(() => {
                    setTimeout(() => {
                        window.location.reload()
                    }, 1500)
                })
            }
        }
    }
    return Promise.reject(error)
}

// request interceptor
request.interceptors.request.use(config => {
    const token = storage.get(ACCESS_TOKEN)
        // config.data = JSON.stringify(config.data);
        // 如果 token 存在
        // 让每个请求携带自定义 token 请根据实际情况自行修改
        // if (token) {
        //     config.headers['Access-Token'] = token
        // }
    config.headers = {
        'Content-Type': 'application/json;charset=UTF-8;',
        'Accept': 'application/json;application/json',
        'Access-Token': token
    }
    return config
}, errorHandler)

// response interceptor
request.interceptors.response.use((response) => {
    return response.data
}, errorHandler)

// const installer = {
//     vm: {},
//     install(Vue) {
//         Vue.use(VueAxios, request)
//     }
// }

// oss
const oss = axios.create({
    baseURL: "http://osssignin.comeonfans.com",
    // timeout: 3 * 1000,
});
oss.interceptors.request.use((config) => {
    config.data = JSON.stringify(config.data);
    config.headers["Content-Type"] = "application/x-www-form-urlencoded";
    config.headers["Accept"] = "application/json;application/json";
    return config;
}, errorHandler);

// response interceptor
oss.interceptors.response.use((response) => {
    return response.data;
}, errorHandler);

// export default request
export { request, oss };


// export default { request, oss }

// export {
//     installer as VueAxios,
//     request as axios
// }